home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / src / Tools / freeWAIS-sf-1.1 / ir / irhash.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-08-22  |  2.3 KB  |  73 lines

  1. /* WIDE AREA INFORMATION SERVER SOFTWARE:
  2.    No guarantees or restrictions.  See the readme file for the full standard
  3.    disclaimer.
  4.  
  5.    Brewster@think.com
  6. */
  7.  
  8. /* Copyright (c) CNIDR (see ../COPYRIGHT) */
  9.  
  10.  
  11. /* Include file for the irhash.c file.
  12.    Implements the building functions in irext.h */
  13.  
  14. #ifndef IRHASH_H
  15. #define IRHASH_H
  16.  
  17. #include "cdialect.h"
  18. #include "cutil.h"
  19. #include "hash.h"
  20. #include "irfiles.h"
  21.  
  22. /* the amount of memory for word occurances (bytes) */
  23. #ifdef NEW_WEIGHT /* tung, 5/94 */
  24. #define WORD_MEMORY_INIT_BLOCK_SIZE (DOCUMENT_ID_SIZE+CHARACTER_POSITION_SIZE+WEIGHT_SIZE+NEW_WEIGHT_SIZE)
  25. #else
  26. /* #define WORD_MEMORY_INIT_BLOCK_SIZE 10 */
  27. #define WORD_MEMORY_INIT_BLOCK_SIZE (DOCUMENT_ID_SIZE+CHARACTER_POSITION_SIZE+WEIGHT_SIZE)
  28. #endif
  29.  
  30. /* this is a flag to be put in the number_of_occurances field of a
  31. word_entry so that it is always greater than the limit and no words will be
  32. collected. */ 
  33. #define STOP_WORD_FLAG ((long)(1 << (NUMBER_OF_OCCURANCES_SIZE * 8 -2)))
  34.  
  35. /* this is the maximum number of occurances that will be stored in the 
  36.  * disk table.  The number of occurances will reflect the total number in
  37.  * all files.  The theory is that if a word is very common, then it
  38.  * is not very useful in descriminating between files.  Also, if it
  39.  * is very common, then it takes up alot of space.
  40.  * Maybe this should be dependent on the number of documents indexed.
  41.  * Therefore if a word is in every document, then it probably does not mean
  42.  * much.  
  43.  * In increasing this, it may not keep all the references in the 
  44.  * inverted file because the max length of an index block is governed
  45.  * by a size that can be represented in INDEX_BLOCK_SIZE_SIZE bytes.
  46.  */
  47. #define MAX_OCCURANCES (STOP_WORD_FLAG-1)
  48.  
  49.  
  50. #ifdef __cplusplus
  51. /* declare these as C style functions */
  52. extern "C"
  53.     {
  54. #endif /* def __cplusplus */
  55.  
  56. unsigned char *make_word_occurrance_block _AP((long size));
  57.  
  58. void free_word_occurance_block _AP((unsigned char *block));
  59.  
  60. void flush_word_occurance_buffers _AP((void));
  61.  
  62. void gc_word_occurance_buffers _AP((hashtable * the_word_memory_hashtable));
  63.  
  64. void add_stop_words _AP((hashtable *the_word_memory_hashtable));
  65.  
  66. long write_bytes_to_memory _AP((long value,long size,unsigned char* ptr));
  67.  
  68. #ifdef __cplusplus
  69.     }
  70. #endif /* def __cplusplus */
  71.  
  72. #endif /* nded IRHASH_H */
  73.